﻿''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Codigo de proyecto: 306 F
' Nombre proyecto: Framework Web LNK
' Nombre del módulo: Abm Capos Filtro
' Tarea/s relacionada/s: Paginas Estandar
' Fecha creacion: 19/11/2009
' Autor/es original/es: Mauro Cristy mcristy@cdt-ar.com 
' Fecha modificacion: No Aplica
' Autor modificacion: No Aplica
' R02 relacionados: 08
' R03 relacionados: No Aplica
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Imports StartFrame.BR.Web.Utilitarios

Partial Public Class Abm_CamposFiltro
    Inherits System.Web.UI.Page

    Public masterpage As AbmBase

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim obr As New BR.WEb.Utilitarios.Abms.CamposFiltro

        'Campos de filtrado
        Dim cf As String = "nm_campo, tp_filtro, tp_dato, nm_tabla, de_obs"
        'Columnas de grilla
        Dim cg As String = "nm_campo, tp_filtro, tp_dato, ca_caracteres, va_defecto_min , va_defecto_max, va_minimo, va_maximo, nm_tabla"

        Dim ac As New Hashtable

        ac.Add("nm_campo", "Nombre")
        ac.Add("tp_filtro", "Filtro")
        ac.Add("tp_dato", "Tipo de dato")
        ac.Add("ca_caracteres", "Cant. Caracteres")
        ac.Add("va_defecto_min", "Minimo Predef.")
        ac.Add("va_defecto_max", "Maximo Predef.")
        ac.Add("va_minimo", "Minimo")
        ac.Add("va_maximo", "Maximo")
        ac.Add("nm_tabla", "Tabla")

        'Instancia iniciada de la clase de masterpage
        masterpage = CType(Page.Master, AbmBase)

        masterpage.lblTitulo = "Abm de Campos Filtro"

        masterpage.FiltrosBusqueda = cf
        masterpage.ColumnasGrilla = cg
        masterpage.AliasCampos = ac
        masterpage.InicializarPagina(obr)

        'Captura del enevento Actualizando y asignacion de handler al metodo Validaciones
        AddHandler masterpage.Actualizando, AddressOf Validaciones

        'Enlace de eventos Javascript
        ca_caracteres.Attributes.Add("onBlur", "return val_ca_caracteres('" & ca_caracteres.ClientID & "','" & tp_dato.SelectedValue & "','" & lbl_val_ca_caracteres.ClientID & "');")

        va_minimo.Attributes.Add("onBlur", "return val_rangominpredeterminado('" & va_minimo.ClientID & "','" & va_maximo.ClientID & "','" & lbl_val_va_minimo.ClientID & "','" & lbl_val_va_maximo.ClientID & "','" & tp_dato.SelectedValue & "');")
        va_maximo.Attributes.Add("onBlur", "return val_rangomaxpredeterminado('" & va_minimo.ClientID & "','" & va_maximo.ClientID & "','" & lbl_val_va_minimo.ClientID & "','" & lbl_val_va_maximo.ClientID & "','" & tp_dato.SelectedValue & "');")

        va_defecto_min.Attributes.Add("onBlur", "return val_rangomindefecto('" & va_defecto_min.ClientID & "','" & va_defecto_max.ClientID & "','" & lbl_val_va_defecto_min.ClientID & "','" & lbl_val_va_defecto_max.ClientID & "','" & tp_dato.SelectedValue & "');")
        va_defecto_max.Attributes.Add("onBlur", "return val_rangomaxdefecto('" & va_defecto_min.ClientID & "','" & va_defecto_max.ClientID & "','" & lbl_val_va_defecto_min.ClientID & "','" & lbl_val_va_defecto_max.ClientID & "','" & tp_dato.SelectedValue & "');")

        If Not Page.IsPostBack Then
            'Carga del combo con datos fijos
            comboTp_dato(tp_filtro.SelectedValue)
            combonm_Campo()
            comboNm_tabla()
            comboNm_campo_tabla()
            comboNm_campo_tabla_des()
        End If

    End Sub

    Protected Overloads Sub OnPreInit() Handles Me.PreInit

        'Aplicacion de Tema
        If Not Session("Tema") Is Nothing Then
            Page.Theme = Session("Tema").ToString
        End If

    End Sub

#Region "Metodos Privados"

    'Carga del combo tp_dato con datos fijos.
    Private Sub comboTp_dato(ByVal tp_filtro As Char)

        Dim item1, item2, item3, item4 As New ListItem

        tp_dato.Items.Clear()

        item1.Value = "S"
        item1.Text = "String"

        tp_dato.Items.Add(item1)

        item2.Value = "N"
        item2.Text = "Númerico"

        tp_dato.Items.Add(item2)

        item3.Value = "F"
        item3.Text = "Fecha"

        tp_dato.Items.Add(item3)

        If Not tp_filtro = "D" Then

            item4.Value = "L"
            item4.Text = "Logico"

            tp_dato.Items.Add(item4)
        End If

        tp_dato.SelectedIndex = 0
    End Sub

    Private Sub combonm_Campo()
        Dim DataSetCombo As New DataSet
        DataSetCombo = Sql.Select(ConnectionString, "*", "wad_campos")
        For Each row In DataSetCombo.Tables(0).Rows
            Dim item As New ListItem
            item.Value = row("nm_campo")
            item.Text = row("nm_campo")
            nm_campo.Items.Add(item)
        Next
    End Sub

    'Carga del combo nm_tabla.
    Private Sub comboNm_tabla()
        Dim ds As New DataSet

        ds = StartFrame.DA.Sql.Select(ConnectionString, "*", "wad_tablas")

        nm_tabla.Items.Clear()
        Dim itemVacio As New ListItem
        itemVacio.Value = ""
        itemVacio.Text = "Ninguno"
        nm_tabla.Items.Add(itemVacio)
        For Each est In ds.Tables(0).Rows
            Dim item As New ListItem
            item.Value = est(0)
            item.Text = est(0)
            nm_tabla.Items.Add(item)
        Next

    End Sub

    'Carga del combo nm_campo_tabla.
    Private Sub comboNm_campo_tabla()
        Dim ds As New DataSet

        ds = StartFrame.DA.Sql.Select(ConnectionString, "*", "wad_campos")

        nm_campo_tabla.Items.Clear()
        Dim itemVacio As New ListItem
        itemVacio.Value = ""
        itemVacio.Text = "Ninguno"
        nm_campo_tabla.Items.Add(itemVacio)
        For Each est In ds.Tables(0).Rows
            Dim item As New ListItem
            item.Value = est(0)
            item.Text = est(0)
            nm_campo_tabla.Items.Add(item)
        Next

    End Sub

    'Carga del combo nm_campo_tabla.
    Private Sub comboNm_campo_tabla_des()
        Dim ds As New DataSet

        ds = StartFrame.DA.Sql.Select(ConnectionString, "*", "wad_campos")

        nm_campo_tabla_des.Items.Clear()
        Dim itemVacio As New ListItem
        itemVacio.Value = ""
        itemVacio.Text = "Ninguno"
        nm_campo_tabla_des.Items.Add(itemVacio)
        For Each est In ds.Tables(0).Rows
            Dim item As New ListItem
            item.Value = est(0)
            item.Text = est(0)
            nm_campo_tabla_des.Items.Add(item)
        Next

    End Sub

#End Region

#Region "Eventos de ABM BASE capturados"

    'Metodo al cual se le asignara el evento Actualizando
    Private Sub Validaciones(ByRef cancela As Boolean)

        'ca_caracteres obligatorio solo si tp_dato es "S"
        If tp_dato.SelectedValue = "S" Then
            If ca_caracteres.Text Is "" Then
                'Cancela la grabación
                cancela = True
                Exit Sub
            End If
        End If

        'validar que se pueda realizar un Ctype() sin errores al tp_dato especificado.
        Try
            If Not va_minimo.Text Is "" Then

                Select Case tp_dato.SelectedValue
                    Case "S"
                        va_minimo.Text = CType(va_minimo.Text, String)
                    Case "N"
                        va_minimo.Text = CType(va_minimo.Text, Integer)
                    Case "F"
                        va_minimo.Text = CType(va_minimo.Text, Date)
                End Select

            End If
        Catch ex As Exception
            'Cancela la grabación
            cancela = True
            Exit Sub
        End Try

        'validar que se pueda realizar un Ctype() sin errores al tp_dato especificado.
        Try
            If Not va_maximo.Text Is "" Then
                Select Case tp_dato.SelectedValue
                    Case "S"
                        va_maximo.Text = CType(va_maximo.Text, String)
                    Case "N"
                        va_maximo.Text = CType(va_maximo.Text, Integer)
                    Case "F"
                        va_maximo.Text = CType(va_maximo.Text, Date)
                End Select
            End If
        Catch ex As Exception
            'Cancela la grabación
            cancela = True
            Exit Sub
        End Try

        If Not va_maximo.Text Is "" And Not va_minimo.Text Is "" Then
            'El valor maximo tiene que ser mayor que el minimo.
            If va_maximo.Text < va_minimo.Text Then
                'Cancela la grabación
                cancela = True
                Exit Sub
            End If
        End If

        'va_defecto_min
        'validar que se pueda realizar un Ctype() sin errores al tp_dato especificado.
        Try
            If Not va_defecto_min.Text Is "" Then

                Select Case tp_dato.SelectedValue
                    Case "S"
                        va_defecto_min.Text = CType(va_defecto_min.Text, String)
                    Case "N"
                        va_defecto_min.Text = CType(va_defecto_min.Text, Integer)
                    Case "F"
                        va_defecto_min.Text = CType(va_defecto_min.Text, Date)
                End Select
            End If
        Catch ex As Exception
            'Cancela la grabación
            cancela = True
            Exit Sub
        End Try

        'va_defecto_max
        'validar que se pueda realizar un Ctype() sin errores al tp_dato especificado.
        Try

            If Not va_defecto_max.Text Is "" Then

                Select Case tp_dato.SelectedValue
                    Case "S"
                        va_defecto_max.Text = CType(va_defecto_max.Text, String)
                    Case "N"
                        va_defecto_max.Text = CType(va_defecto_max.Text, Integer)
                    Case "F"
                        va_defecto_max.Text = CType(va_defecto_max.Text, Date)
                End Select

            End If
        Catch ex As Exception
            'Cancela la grabación
            cancela = True
            Exit Sub
        End Try

        If Not va_defecto_max.Text Is "" And Not va_defecto_min.Text Is "" Then
            'El valor maximo tiene que ser mayor que el minimo. Sino nada tiene sentidoooooO.
            If va_defecto_max.Text < va_defecto_min.Text Then
                'Cancela la grabación
                cancela = True
                Exit Sub
            End If
        End If

    End Sub

#End Region

#Region "Eventos Privados"

    Private Sub tp_dato_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles tp_dato.SelectedIndexChanged
        'Si el combo tiene seleccionado el tipo de dato Fecha que aparezcan los calendarios en los controles de maximo y minimo
        If tp_dato.SelectedValue = "F" Then
            'Habilita los Calendarios
            CalendarExtender1.Enabled = True
            CalendarExtender2.Enabled = True
            CalendarExtender3.Enabled = True
            CalendarExtender4.Enabled = True

            ca_caracteres.Enabled = False
        Else
            'Deshabilita los calendarios
            CalendarExtender1.Enabled = False
            CalendarExtender2.Enabled = False
            CalendarExtender3.Enabled = False
            CalendarExtender4.Enabled = False
        End If

        If tp_dato.SelectedValue = "L" Then
            ca_caracteres.Enabled = False
        End If

        If tp_dato.SelectedValue = "S" Then
            ca_caracteres.Enabled = True
        End If

        If tp_dato.SelectedValue = "N" Then
            ca_caracteres.Enabled = True
        End If

    End Sub

#End Region


End Class